from sympy import *
# 初始化打印格式
init_printing(use_unicode=True)
# 输入矩阵A
A = Matrix([[4,2,3],[1,1,0],[-1,2,3]])
# AB=A+2B，求B
# 设置单位矩阵
E = Matrix([[1,0,0],[0,1,0],[0,0,1]])
# 原式化为(A-2E)B = A
# 判断A-2E是否可逆

if (A-(2*E)).rank() == list((A-(2*E)).shape)[0] or (A-(2*E)).rank() == list((A-(2*E)).shape)[0]:
    print("A-2E为满秩矩阵，矩阵A-2E的秩为",(A-(2*E)).rank())# 计算结果
    print("矩阵B为\n",A-(2*E).inv()*A)
else:
    print("A-2E为降秩矩阵,无逆矩阵，矩阵A-2E的秩为",(A-(2*E)).rank())

